// 在Vue组件中或者单独的工具文件中
export function downloadExcelTemplate(templateName) {
    const url = '/template/' + templateName
    const xhr = new XMLHttpRequest()
    xhr.open('GET', url, true)
    xhr.responseType = 'blob'
    xhr.onload = () => {
        if (xhr.status === 200) {
            const blob = new Blob([xhr.response], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })
            const url = URL.createObjectURL(blob)
            const link = document.createElement('a')
            link.href = url
            link.download = templateName
            link.click()
            URL.revokeObjectURL(url)
        }
    }
    xhr.send()
}

/**
 * 箱清单统计
 * @param boxDatas
 * @returns {0*40(重), 44*20F(重), 0*40E, 0*20E, 总箱量:44 TEU, 总记录:44条}
 */
export function boxDataCount(boxDatas) {
    // 使用reduce方法进行多条件分组统计 一个TEU代表 20英寸
    // 0*40(重), 44*20F(重), 0*40E, 0*20E, 总箱量:44 TEU, 总记录:44条
    const groupResult = boxDatas.reduce((acc, item) => {
        // "cszCsizecd": "20", "cstatusName": "空",
        const key = item.cszCsizecd + item.cstatusName;
        acc[key] = (acc[key] || 0) + 1;
        return acc;
    }, {});
    const result = Object.keys(groupResult).map(key => `${key}: ${groupResult[key]}`).join(', ')
    return result + " 总记录:" + boxDatas.length
}

/**
 * 装卸船清单，补充序号、货名展示，需要且能展示补充的统一在此处理
 * @param boxDatas
 * @returns {string}
 */
export function fillDisplay(tableData) {
    if(tableData.length){
        tableData.forEach((item,index)=>{
            // 增加序号
            item.no = index + 1
            //增加货名展示
            item.goodsDisplay = [...new Set(item.goods.map(it => it['gname']))].join('');
            // this.tableData.push(item)
        })
    }
}
